Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Themes & Theming ›

Javascript Slidedown Menü integrieren

Eingetragen von masterlampe (4)
am 12.07.2010 - 19:10 Uhr in
  • Themes & Theming
  • Drupal 6.x

Hi Drupaler,

ich bin gerade am erstellen einer Drupalseite und muss mich noch am Menü schaffen. Habe schon Nice Menüs und Superfish probiert, aber war beides nicht ganz mein Wunsch jetzt habe ich ein Slidedown Menü in Javascript gefunden und möchte dieses einbauen. Bräuchte da mal kurz Tipps, wie ich das am besten mache.

Das gewünschte Menü ist auf http://www.dhtmlgoodies.com/scripts/slidedown-menu2/slidedown-menu2.html zu sehen und der Quelltext wird auch angezeigt.

Ich möchte damit das Standardmenü überschreiben. Wie ich es jetzt verstanden habe, packe ich die CSS-Befehle in meine system-menues.css und das Javascript??? Wo müsste ich dann den html-Code eingeben? Ist das ganze überhaupt umsetzbar? Vielleicht lieber auf Basis von Superfish oder so?

Danke für eure Hilfe!!!

‹ block.tpl.php wird nicht eingebunden - Wo der Fehler? Theming von Views aus dem Modul "Taxonomy Menu" ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

implementation javaskript menüs

Eingetragen von karl1120 (97)
am 12.07.2010 - 20:32 Uhr

Die implementation ist möglich, wenn auch etwas umständlich für einsteiger.

CSS:
in deinem theme order befinden sich dateien für css, dort fügst du den css code für dein menü ein.
Dieser code muss noch angepasst werden.

Menü:
für das menü verwendest du ein modul das den menü title link als .class benutzt "vereinfacht die implementierung"

javascript: in deinem theme ordner befindet sich eine datei "scripts.js" dort fügst du den javascript code ein.
falls die datei nicht vorhanden ist musst du sie in "dein theme name.info " aktivieren.

implementation:
installiere das modul
menu_css_names

erstelle als nächstes hirachisch dein menü so wie du es gerne hättest

dann passt du dem entsprechend dein css code an

bsp:
"#dhtmlgoodies_slidedown_menu li"
ersetzt du durch
"#deinmenüname li"

hierbei kann dir firebug eine große hilfe sein.
sorry für die kurtze anleitung soll dich aber auch nur auf den richtigen weg bringen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Etwas Hilfe bitte noch!!!

Eingetragen von masterlampe (4)
am 13.07.2010 - 13:43 Uhr

Hi,

also, ich habe zuerst einmal den Javascript teil in die script.js importiert, welche ich auch in der info verlinkt habe. Muss ich in die .js noch einen Header oder sowas reinschreiben oder genügt das so?

P.S. Unten geht's noch weiter mit dem Post!

Zitat:

var expandFirstItemAutomatically = false; // Expand first menu item automatically ?
var initMenuIdToExpand = false; // Id of menu item that should be initially expanded. the id is defined in the

  • tag.
    var expandMenuItemByUrl = true; // Menu will automatically expand by url - i.e. if the href of the menu item is in the current location, it will expand
  • var initialMenuItemAlwaysExpanded = true; // NOT IMPLEMENTED YET

    var dhtmlgoodies_slmenuObj;
    var divToScroll = false;
    var ulToScroll = false;
    var divCounter = 1;
    var otherDivsToScroll = new Array();
    var divToHide = false;
    var parentDivToHide = new Array();
    var ulToHide = false;
    var offsetOpera = 0;
    if(navigator.userAgent.indexOf('Opera')>=0)offsetOpera=1;
    var slideMenuHeightOfCurrentBox = 0;
    var objectsToExpand = new Array();
    var initExpandIndex = 0;
    var alwaysExpanedItems = new Array();

    function popMenusToShow()
    {
    var obj = divToScroll;
    var endArray = new Array();
    while(obj && obj.tagName!='BODY'){
    if(obj.tagName=='DIV' && obj.id.indexOf('slideDiv')>=0){
    var objFound = -1;
    for(var no=0;no=0){
    otherDivsToScroll.splice(objFound,1);
    }
    }
    obj = obj.parentNode;
    }
    }

    function showSubMenu(e,inputObj)
    {

    if(this && this.tagName)inputObj = this.parentNode;
    if(inputObj && inputObj.tagName=='LI'){
    divToScroll = inputObj.getElementsByTagName('DIV')[0];
    for(var no=0;no0){
    if(divToScroll){
    if(otherDivsToScroll.length>0){
    popMenusToShow();
    }
    if(otherDivsToScroll.length>0){
    autoHideMenus();
    hidingInProcess = true;
    }
    }
    }
    if(divToScroll && !hidingInProcess){
    divToScroll.style.display='';
    otherDivsToScroll.length = 0;
    otherDivToScroll = divToScroll.parentNode;
    otherDivsToScroll.push(divToScroll);
    while(otherDivToScroll && otherDivToScroll.tagName!='BODY'){
    if(otherDivToScroll.tagName=='DIV' && otherDivToScroll.id.indexOf('slideDiv')>=0){
    otherDivsToScroll.push(otherDivToScroll);

    }
    otherDivToScroll = otherDivToScroll.parentNode;
    }
    ulToScroll = divToScroll.getElementsByTagName('UL')[0];
    if(divToScroll.style.height.replace('px','')/1<=1)scrollDownSub();
    }

    return false;
    }

    function autoHideMenus()
    {
    if(otherDivsToScroll.length>0){
    divToHide = otherDivsToScroll[otherDivsToScroll.length-1];
    parentDivToHide.length=0;
    var obj = divToHide.parentNode.parentNode.parentNode;
    while(obj && obj.tagName=='DIV'){
    if(obj.id.indexOf('slideDiv')>=0)parentDivToHide.push(obj);
    obj = obj.parentNode.parentNode.parentNode;
    }
    var tmpHeight = (divToHide.style.height.replace('px','')/1 - slideMenuHeightOfCurrentBox);
    if(tmpHeight<0)tmpHeight=0;
    if(slideMenuHeightOfCurrentBox)divToHide.style.height = tmpHeight + 'px';
    ulToHide = divToHide.getElementsByTagName('UL')[0];
    slideMenuHeightOfCurrentBox = ulToHide.offsetHeight;
    scrollUpMenu();
    }else{
    slideMenuHeightOfCurrentBox = 0;
    showSubMenu();
    }
    }

    function scrollUpMenu()
    {

    var height = divToHide.offsetHeight;
    height-=15;
    if(height<0)height=0;
    divToHide.style.height = height + 'px';

    for(var no=0;no0){
    setTimeout('scrollUpMenu()',5);
    }else{
    divToHide.style.display='none';
    otherDivsToScroll.length = otherDivsToScroll.length-1;
    autoHideMenus();
    }
    }

    function scrollDownSub()
    {
    if(divToScroll){
    var height = divToScroll.offsetHeight/1;
    var offsetMove =Math.min(15,(ulToScroll.offsetHeight - height));
    height = height +offsetMove ;
    divToScroll.style.height = height + 'px';

    for(var no=1;no0 && initExpandIndex<(objectsToExpand.length-1)){
    initExpandIndex++;

    showSubMenu(false,objectsToExpand[initExpandIndex]);
    }
    }
    }
    }

    function initSubItems(inputObj,currentDepth)
    {
    divCounter++;
    var div = document.createElement('DIV'); // Creating new div
    div.style.overflow = 'hidden';
    div.style.position = 'relative';
    div.style.display='none';
    div.style.height = '1px';
    div.id = 'slideDiv' + divCounter;
    div.className = 'slideMenuDiv' + currentDepth;
    inputObj.parentNode.appendChild(div); // Appending DIV as child element of

  • that is parent of input

      div.appendChild(inputObj); // Appending
        to the div
        var menuItem = inputObj.getElementsByTagName('LI')[0];
        while(menuItem){
        if(menuItem.tagName=='LI'){
        var aTag = menuItem.getElementsByTagName('A')[0];
        aTag.className='slMenuItem_depth'+currentDepth;
        var subUl = menuItem.getElementsByTagName('UL');
        if(subUl.length>0){
        initSubItems(subUl[0],currentDepth+1);
        }
        aTag.onclick = showSubMenu;
        }
        menuItem = menuItem.nextSibling;
        }
        }
  • function initSlideDownMenu()
    {
    dhtmlgoodies_slmenuObj = document.getElementById('menu');
    dhtmlgoodies_slmenuObj.style.visibility='visible';
    var mainUl = dhtmlgoodies_slmenuObj.getElementsByTagName('UL')[0];
    var mainMenuItem = mainUl.getElementsByTagName('LI')[0];
    mainItemCounter = 1;
    while(mainMenuItem){
    if(mainMenuItem.tagName=='LI'){
    var aTag = mainMenuItem.getElementsByTagName('A')[0];
    aTag.className='slMenuItem_depth1';
    var subUl = mainMenuItem.getElementsByTagName('UL');
    if(subUl.length>0){
    mainMenuItem.id = 'mainMenuItem' + mainItemCounter;
    initSubItems(subUl[0],2);
    aTag.onclick = showSubMenu;
    mainItemCounter++;
    }
    }
    mainMenuItem = mainMenuItem.nextSibling;
    }

    if(location.search.indexOf('mainMenuItemToSlide')>=0){
    var items = location.search.split('&');
    for(var no=0;no=0){
    values = items[no].split('=');
    showSubMenu(false,document.getElementById('mainMenuItem' + values[1]));
    initMenuIdToExpand = false;
    }
    }
    }else if(expandFirstItemAutomatically>0){
    if(document.getElementById('mainMenuItem' + expandFirstItemAutomatically)){
    showSubMenu(false,document.getElementById('mainMenuItem' + expandFirstItemAutomatically));
    initMenuIdToExpand = false;
    }
    }

    if(expandMenuItemByUrl)
    {
    var aTags = dhtmlgoodies_slmenuObj.getElementsByTagName('A');
    for(var no=0;no=0 && hrefToCheckOn.indexOf('#')0){
    objectsToExpand.unshift(obj);
    }
    }
    obj = obj.parentNode;
    }
    showSubMenu(false,objectsToExpand[0]);
    break;
    }
    }
    }

    if(initMenuIdToExpand)
    {
    objectsToExpand = new Array();
    var obj = document.getElementById(initMenuIdToExpand)
    while(obj && obj.id!='menu'){
    if(obj.tagName=='LI'){
    var subUl = obj.getElementsByTagName('UL');
    if(initialMenuItemAlwaysExpanded)alwaysExpanedItems[obj.parentNode] = true;
    if(subUl.length>0){
    objectsToExpand.unshift(obj);
    }
    }
    obj = obj.parentNode;
    }

    showSubMenu(false,objectsToExpand[0]);

    }

    }

    Dann habe ich in meine theme.css den css-Code eingefügt. Mein menu soll einfach menu als css-Name haben. Habe außerdem das menu_name_css Modul installiert.

    Jetzt noch meine Frage? Muss ich nicht irgendwie die css mit dem Javascript verbinden, sonst weiß er doch gar nicht, dass er das verwenden soll? Wo genau müsste diese Anweisung erscheinen? In der page.tpl.php oder so? Das verwirrt mich etwas, da bisher noch nichts zu erkennen ist, dass er etwas ändert.

    Des weiteren habe ich an meinem Menü nichts verändert, da drupal momentan das Standardmenü korrekt anzeigt. Das passt dann so, oder?

    Würde mich sehr freuen, wenn ich dazu nochmal Infos bekommen könnte!!!

    • Anmelden oder Registrieren um Kommentare zu schreiben

    Benutzeranmeldung

    • Registrieren
    • Neues Passwort anfordern

    Aktive Forenthemen

    • für drupal11 ein Slider Modul
    • [gelöst] W3CSS Paragraphs Views
    • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
    • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
    • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
    • Social Media Buttons um Insteragram erweitern
    • Nach Installation der neuesten D10-Version kein Zugriff auf Website
    • Composer nach Umzug
    • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
    • Drupal 11 + Experience Builder (Canvas) + Layout Builder
    • Welche KI verwendet ihr?
    • Update Manger läst sich nicht Installieren
    Weiter

    Neue Kommentare

    • melde mich mal wieder, da ich
      vor 2 Wochen 2 Tagen
    • Hey danke
      vor 2 Wochen 2 Tagen
    • Update: jetzt gibt's ein
      vor 2 Wochen 3 Tagen
    • Hallo, im Prinzip habe ich
      vor 3 Wochen 1 Tag
    • Da scheint die Terminologie
      vor 3 Wochen 1 Tag
    • Kannst doch auch alles direkt
      vor 3 Wochen 5 Tagen
    • In der entsprechenden View
      vor 3 Wochen 5 Tagen
    • Dazu müsstest Du vermutlich
      vor 3 Wochen 5 Tagen
    • gelöst
      vor 6 Wochen 2 Tagen
    • Ja natürlich. Dass ist etwas,
      vor 6 Wochen 2 Tagen

    Statistik

    Beiträge im Forum: 250233
    Registrierte User: 20453

    Neue User:

    • ByteScrapers
    • Mroppoofpaync
    • 4aficiona2

    » Alle User anzeigen

    User nach Punkten sortiert:
    wla9461
    stBorchert6003
    quiptime4972
    Tobias Bähr4019
    bv3924
    ronald3857
    md3717
    Thoor3678
    Alexander Langer3416
    Exterior2903
    » User nach Punkten
    Zur Zeit sind 0 User und 32 Gäste online.

    Hauptmenü

    • » Home
    • » Handbuch & FAQ
    • » Forum
    • » Übersetzungsserver
    • » Suche

    Quicklinks I

    • Infos
    • Drupal Showcase
    • Installation
    • Update
    • Forum
    • Team
    • Verhaltensregeln

    Quicklinks II

    • Drupal Jobs
    • FAQ
    • Drupal-Kochbuch
    • Best Practice - Drupal Sites - Guidelines
    • Drupal How To's

    Quicklinks III

    • Tipps & Tricks
    • Drupal Theme System
    • Theme Handbuch
    • Leitfaden zur Entwicklung von Modulen

    RSS & Twitter

    • Drupal Planet deutsch
    • RSS Feed News
    • RSS Feed Planet
    • Twitter Drupalcenter
    Drupalcenter Team | Impressum & Datenschutz | Kontakt
    Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
    Drupal Initiative - Drupal Association